package com.hmall.item.web;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hmall.common.dto.PageDTO;
import com.hmall.item.pojo.Item;
import com.hmall.item.service.IItemService;
import com.hmall.item.service.impl.ItemService;
import com.sun.glass.ui.Size;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.yaml.snakeyaml.events.Event;

@RestController
@RequestMapping("/item")
@Slf4j
public class ItemController {

    @Autowired
    private ItemService itemService;

    @GetMapping("/list")
    public PageDTO<Item> list(@RequestParam("page") Integer page,@RequestParam("size") Integer size){
        log.info("page={},size={}",page,size);
        //2.分页构造器
        Page<Item> page1 = new Page<>(page, size);
        //3.调用方法，方法由mp提供
        Page<Item> PageList = itemService.page(page1);
        //4.封装数据（条数“total”，内容列表“list”）,返回结果
        return new PageDTO<>(PageList.getTotal(),PageList.getRecords());

    }

    @GetMapping("{id}")
    public Item selectById(@PathVariable("id") Long id){
        return itemService.getById(id);
    }

    @PostMapping
    public void save(@RequestBody Item item){
        itemService.save(item);
    }

    @PutMapping("/status/{id}/{status}")
    public void updateStatusById(@PathVariable("id") Long id,@PathVariable("status") Integer status){
        //根据id查询到那一条数据
        Item item = itemService.getById(id);
        //修改那一条数据中的status值，前端传过来的数据中就有要修改的值，将这个值赋给item（查询到的数据）
        item.setStatus(status);
        //修改数据
        itemService.updateById(item);
    }

    @PutMapping
    public void updateById(@RequestBody Item item){
        //前端做过回显，就不用查询了，直接修改
        itemService.updateById(item);
    }

    @DeleteMapping("/{id}")
    public void deleteById(@PathVariable("id") Long id)
    {
        itemService.removeById(id);
    }

}
